#ifndef __GPIO_H
#define __GPIO_H
#include "stm32f0xx.h"
#include "common.h"
#include "stm32f0xx_ll_gpio.h"

typedef enum
{
  MRESOLUTION_8 = 1,
  MRESOLUTION_16,
  MRESOLUTION_32,
  MRESOLUTION_64,
}MOTOR_RESOLUTION;

void Gpio_init(void);
void Resolution_Configure(MOTOR_RESOLUTION Preassigned);
void GPIO_OUT_init(GPIO_TypeDef *GPIOx, uint32_t PinMask);
void shutdown_motor_pwr(void);

#define LED_ON	LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_3) //GREEN
#define LED_OFF	LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_3) //GREEN


#define SHUTTER_ON	LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_10) //
#define SHUTTER_OFF	LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_10) //

#define BLE_SHUT_ON LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_12)
#define BLE_SHUT_OFF LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_12)

//#define MOTOR_SLEEP	LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_0) //
//#define MOTOR_WACKUP	LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_0) //
//#define MOTOR_DIAG		LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_6)

#define BATTER_MOS_ON LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_11)
#define BATTER_MOS_OFF LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_11)

#define USB_MOS_ON LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_8)
#define USB_MOS_OFF LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_8)

#define USB_STATUS	LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_15)

#define LEFT_REACTION	LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_5)
//#define RIGHT_REACTION	LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_6)

#define BLUE_STATUS LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_4)

#endif
